1. Field of the Invention
This invention relates to the field of high performance graphics systems, and more particularly to interfacing and interactions between the host computer and the graphics processor.
2. Description of the Related Art
Typical high performance graphics applications consist of a host computer with general capabilities and a specialized hardware graphics processor to perform dedicated graphic operations. A graphics processor has built-in hardware circuitry to carry out time-consuming tasks such as line drawing, block filling and block transfers (BLT). In addition, most graphics processors can be programmed to generate video control signals for video display. The host computer sends commands to and receives status from the graphics processor as part of its overall software. Upon receipt of the commands from the host, the graphics processor can carry out its operations independently. The host can also read the status of the graphics processor by accessing its internal registers or in some cases by monitoring the graphics processor signals. However, there is still some overhead involved in exchanging information. The problem becomes more pronounced when the host desires to send a series of commands to the graphics processor. The interaction between the host and the graphics processor, therefore, needs to be optimized to relieve the host of the burden of managing the graphics operations and the video control functions.
There are several interaction schemes that the host can adopt. First, in a polling scheme, the host can monitor the graphics processor (by reading a status bit for example) to determine if the previous set of commands has been completed so that it can send a new set of commands. The most serious drawback of this polling scheme is that it wastes host time because the host can go back to its normal function only after the entire graphic sequence has been completed. Second, in an interrupt scheme, the graphics processor can send an interrupt signal to the host when it finishes the set of commands. The problem with this interrupt scheme is that there is still some idle time before the host can respond, and the host might become inefficient for being continuously interrupted. It is therefore desirable to have a better interaction scheme that minimizes the interaction between the host and the graphics processor so that they can become more independent of each other.
In animation and video processing, the interaction problem becomes more severe. In these applications, there are two update rates: the animation update (or the image update) and the screen refresh. The animation update refers to the rate at which a new image replaces an old image. The screen refresh rate refers to the rate at which the video controller starts a new vertical retrace cycle. While the animation update rate depends on the nature of the image sequence and the speed of the graphics processor, the screen refresh rate depends on the type of display monitor and the programmed video control parameters. These two update rates are totally independent.
There are basically two schemes for updating the images in the display memory. In the first scheme, the display memory is written to as the display is being updated. Since there is no coordination between what part of the display memory is being displayed and what part is being altered, there can be an undesirable effect to the display, referred to as banding or tearing, where the image seems to jump or distort because part of the old image and part of the new image are displayed. In the second scheme, the new image or image portion is written into nonviewable memory space, and when the screen refresh is past the point where banding can occur, this memory content is transferred to the display memory. The problem with this scheme is that the host cannot independently predict when the screen refresh is at a safe point to send a transfer command. This is because screen refresh is an activity independent of the host and there is no relationship between the display clock and the host clock. Even with interrupts, there are still problems of software overhead, initialization, and reliability.
These scenarios show that there is a need for an optimized interaction scheme between the host and the graphics processor to minimize delays and avoid undesirable graphic effects. Graphics operations can then be carried out automatically without intervention from the host.